﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       Shpm.System.Web.Control.CheckFileTypeStr
 * 类型：       服务端输入校验类
 * 功能说明：   文件格式校验类
 * 作者：       郭晓庆
 * 创建日期：   2007/07/10
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
*/
using System;
using System.Collections.Generic;
using System.Text;

namespace Shpm.System.Web.Control
{
    public class CheckFileTypeStr : ComAbsChecker
    {
            /** 文件扩展名 */
	    private String[] types = null;
    	
	    /**
	     * 构造函数
	     * @param value 输入的文件名
	     * @param type  文件类型（扩展名）
	     */
	    public CheckFileTypeStr(String value, String type)  
            : base(value)
        {
		    this.types = new String[]{type};
	    }
	    /**
	     * 构造函数
	     * @param value 入力输入的文件名
	     * @param types 文件类型（扩展名）组
	     */
	    public CheckFileTypeStr(String value, String[] types)
            : base(value)
        {
		    this.types = types;
	    }

        public CheckFileTypeStr(String value, String type,Shpm.System.Validator.ComAbsMsg msg)
            : base(value, msg)
        {
            this.types = new String[] { type };
        }

        public CheckFileTypeStr(String value,String[] types, Shpm.System.Validator.ComAbsMsg msg)
            : base(value, msg)
        {
            this.types = types;
        }

	    /**
	     * 文件类型的检查处理。
	     * @param value 输入值
	     * @return true:正常 / false:异常
	     */
	    protected override bool doCheck(String value){

		    if( base.isEmpty(value) ){
			    return true;
		    }
    		
		    for( int i=0; i<types.Length; i++ ){
			    String type = types[i];
			    // 文件类型的检查
			    if( type.StartsWith(".") == false ){
				    type = "." + type;
			    }
			    type = type.ToUpper();
                if (value.ToUpper().EndsWith(type))
                {
				    return true;
			    }
		    }
    		
		    return false;
    		
	    }
    }
}
